'use strict'

class image {
    constructor() {
        this.param = '/:name'
    }
    __mid() {
        return [
            {
                name: 'token-verify',
                path: ['post', 'delete'] //!只会对 post delete 请求起作用
                //! 声明要对post和delete请求函数启用此中间件 
            }
        ]
    }
    async get(c) {
        let imgname = c.param.name;
        await c.helper.pipe(`${c.service.imagePath}/${imgname}`, c.reply)
    }
    async post(c) {
        //! 根据name获取文件对象
        let f = c.getFile('image');
        //! 没有找到文件对象时候，f返回null，在此判断是否成功找到 
        if (!f) {
            return c.status(400).send('image not found');
        }
        //! 根据传入的原始文件名字生成唯一文件名，主要使用原始文件f.filename的扩展名
        let fname = c.helper.makeName(f.filename);
        //! 移动文件到指定位置
        await c.moveFile(f, `${c.service.imagePath}/${fname}`)
        c.send(fname);
    }
}

module.exports = image;